Skip to content

Commit 8d137e0

Browse files
author
Jongmin Kim
authored
Merge pull request #153 from whdalsrnt/master
Add Query Option
2 parents 9a10aa9 + 46c082d commit 8d137e0

File tree

2 files changed

+37
-25
lines changed

2 files changed

+37
-25
lines changed

src/spaceone/core/model/mongo_model/__init__.py

+20-8
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ def _make_aggregate_rules(cls, aggregate):
11191119
return _aggregate_rules
11201120

11211121
@classmethod
1122-
def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use):
1122+
def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use, return_type):
11231123
result = {}
11241124
pipeline = []
11251125
_aggregate_rules = cls._make_aggregate_rules(aggregate)
@@ -1148,8 +1148,12 @@ def _stat_aggregate(cls, vos, aggregate, page, allow_disk_use):
11481148
cursor = vos.aggregate(pipeline, allowDiskUse=True)
11491149
else:
11501150
cursor = vos.aggregate(pipeline)
1151-
result["results"] = cls._make_aggregate_values(cursor)
1152-
return result
1151+
1152+
if return_type == "cursor":
1153+
return cursor
1154+
else:
1155+
result["results"] = cls._make_aggregate_values(cursor)
1156+
return result
11531157

11541158
@classmethod
11551159
def _stat_distinct(cls, vos, distinct, page):
@@ -1184,6 +1188,7 @@ def stat(
11841188
reference_filter=None,
11851189
target="SECONDARY_PREFERRED",
11861190
allow_disk_use=False,
1191+
return_type="dict",
11871192
**kwargs,
11881193
):
11891194
filter = filter or []
@@ -1199,7 +1204,9 @@ def stat(
11991204
vos = cls._get_target_objects(target).filter(_filter)
12001205

12011206
if aggregate:
1202-
return cls._stat_aggregate(vos, aggregate, page, allow_disk_use)
1207+
return cls._stat_aggregate(
1208+
vos, aggregate, page, allow_disk_use, return_type
1209+
)
12031210

12041211
elif distinct:
12051212
return cls._stat_distinct(vos, distinct, page)
@@ -1499,6 +1506,7 @@ def analyze(
14991506
reference_filter=None,
15001507
target="SECONDARY_PREFERRED",
15011508
allow_disk_use=False,
1509+
return_type="dict",
15021510
**kwargs,
15031511
):
15041512
if fields is None:
@@ -1540,6 +1548,7 @@ def analyze(
15401548
"aggregate": aggregate,
15411549
"target": target,
15421550
"allow_disk_use": allow_disk_use,
1551+
"return_type": return_type,
15431552
"reference_filter": reference_filter,
15441553
}
15451554

@@ -1561,8 +1570,11 @@ def analyze(
15611570

15621571
response = cls.stat(**query)
15631572

1564-
if page_limit:
1565-
response["more"] = len(response["results"]) > page_limit
1566-
response["results"] = response["results"][:page_limit]
1573+
if return_type == "cursor":
1574+
return response
1575+
else:
1576+
if page_limit:
1577+
response["more"] = len(response["results"]) > page_limit
1578+
response["results"] = response["results"][:page_limit]
15671579

1568-
return response
1580+
return response

src/spaceone/core/pygrpc/client.py

+17-17
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ def _generate_response(self, response_iterator):
105105
self._check_error(e)
106106

107107
def _retry_call(
108-
self, continuation, client_call_details, request_or_iterator, is_stream
108+
self, continuation, client_call_details, request_or_iterator, is_stream
109109
):
110110
retries = 0
111111

@@ -142,12 +142,12 @@ def _retry_call(
142142
retries += 1
143143

144144
def _intercept_call(
145-
self,
146-
continuation,
147-
client_call_details,
148-
request_or_iterator,
149-
is_request_stream,
150-
is_response_stream,
145+
self,
146+
continuation,
147+
client_call_details,
148+
request_or_iterator,
149+
is_request_stream,
150+
is_response_stream,
151151
):
152152
new_request_or_iterator = self._check_message(
153153
client_call_details, request_or_iterator, is_request_stream
@@ -171,14 +171,14 @@ def intercept_unary_stream(self, continuation, client_call_details, request):
171171
)
172172

173173
def intercept_stream_unary(
174-
self, continuation, client_call_details, request_iterator
174+
self, continuation, client_call_details, request_iterator
175175
):
176176
return self._intercept_call(
177177
continuation, client_call_details, request_iterator, True, False
178178
)
179179

180180
def intercept_stream_stream(
181-
self, continuation, client_call_details, request_iterator
181+
self, continuation, client_call_details, request_iterator
182182
):
183183
return self._intercept_call(
184184
continuation, client_call_details, request_iterator, True, True
@@ -187,20 +187,20 @@ def intercept_stream_stream(
187187

188188
class _GRPCStub(object):
189189
def __init__(
190-
self,
191-
desc_pool: DescriptorPool,
192-
service_desc: ServiceDescriptor,
193-
channel: grpc.Channel,
190+
self,
191+
desc_pool: DescriptorPool,
192+
service_desc: ServiceDescriptor,
193+
channel: grpc.Channel,
194194
):
195195
self._desc_pool = desc_pool
196196
for method_desc in service_desc.methods:
197197
self._bind_grpc_method(service_desc, method_desc, channel)
198198

199199
def _bind_grpc_method(
200-
self,
201-
service_desc: ServiceDescriptor,
202-
method_desc: MethodDescriptor,
203-
channel: grpc.Channel,
200+
self,
201+
service_desc: ServiceDescriptor,
202+
method_desc: MethodDescriptor,
203+
channel: grpc.Channel,
204204
):
205205
method_name = method_desc.name
206206
method_key = f"/{service_desc.full_name}/{method_name}"

0 commit comments

Comments
 (0)