Skip to content

Commit 887b2d5

Browse files
dizcologyparthea
andauthored
fix: snippetgen skip REST snippets (#1463)
* fix: snippetgen skip REST snippets * upgrade test case to include REST * refactor transport_type computation * revert chunks from incorrect branch * enable REST transport for goldens and update golden files * update golden files with REST enabled Co-authored-by: Anthonios Partheniou <[email protected]>
1 parent b6468c5 commit 887b2d5

File tree

37 files changed

+24710
-4
lines changed

37 files changed

+24710
-4
lines changed

packages/gapic-generator/gapic/generator/generator.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,12 @@ def _generate_samples_and_manifest(
153153
autogen_specs = list(
154154
samplegen.generate_sample_specs(api_schema, opts=opts))
155155

156+
# TODO: Support the generation of REST snippets.
157+
autogen_specs = [
158+
spec for spec in autogen_specs
159+
if spec["transport"] != api.TRANSPORT_REST
160+
]
161+
156162
# Also process any handwritten sample specs
157163
handwritten_specs = samplegen.parse_handwritten_specs(
158164
self._sample_configs)

packages/gapic-generator/gapic/samplegen/samplegen.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -990,6 +990,15 @@ def generate_request_object(api_schema: api.API, service: wrappers.Service, mess
990990
return request
991991

992992

993+
def _transport_type_from_transport(transport: str) -> str:
994+
if transport == api.TRANSPORT_GRPC:
995+
return "sync"
996+
elif transport == api.TRANSPORT_GRPC_ASYNC:
997+
return "async"
998+
else: # api.TRANSPORT_REST
999+
return "rest"
1000+
1001+
9931002
def generate_sample_specs(api_schema: api.API, *, opts) -> Generator[Dict[str, Any], None, None]:
9941003
"""Given an API, generate basic sample specs for each method.
9951004
@@ -1006,10 +1015,10 @@ def generate_sample_specs(api_schema: api.API, *, opts) -> Generator[Dict[str, A
10061015
api_short_name = api_schema.services[f"{api_schema.naming.proto_package}.{service_name}"].shortname
10071016
api_version = api_schema.naming.version
10081017
for transport, client in service.clients.items():
1009-
transport_type = "async" if transport == api.TRANSPORT_GRPC_ASYNC else "sync"
1018+
transport_type = _transport_type_from_transport(transport)
10101019
for rpc_name, method_list in client.rpcs.items():
10111020
# Region Tag Format:
1012-
# [{START|END} ${apishortname}_${apiVersion}_generated_${serviceName}_${rpcName}_{sync|async}]
1021+
# [{START|END} ${apishortname}_${apiVersion}_generated_${serviceName}_${rpcName}_{sync|async|rest}]
10131022
region_tag = f"{api_short_name}_{api_version}_generated_{service_name}_{rpc_name}_{transport_type}"
10141023
spec = {
10151024
"rpc": rpc_name,

packages/gapic-generator/tests/integration/BUILD.bazel

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ py_gapic_library(
5555
opt_args = [
5656
"autogen-snippets",
5757
],
58+
transport = "grpc+rest",
5859
)
5960

6061
# Credentials.
@@ -65,6 +66,7 @@ py_gapic_library(
6566
opt_args = [
6667
"autogen-snippets",
6768
],
69+
transport = "grpc+rest",
6870
)
6971

7072
py_test(
@@ -89,6 +91,7 @@ py_gapic_library(
8991
"python-gapic-name=eventarc",
9092
"autogen-snippets",
9193
],
94+
transport = "grpc+rest",
9295
)
9396

9497
py_test(
@@ -113,6 +116,7 @@ py_gapic_library(
113116
"python-gapic-name=logging",
114117
"autogen-snippets",
115118
],
119+
transport = "grpc+rest",
116120
)
117121

118122
# Uncomment once https://github.com/googleapis/gapic-generator-python/issues/1359 is fixed
@@ -135,6 +139,7 @@ py_gapic_library(
135139
opt_args = [
136140
"autogen-snippets",
137141
],
142+
transport = "grpc+rest",
138143
)
139144

140145
py_test(

packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/gapic_metadata.json

100644100755
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,71 @@
136136
]
137137
}
138138
}
139+
},
140+
"rest": {
141+
"libraryClient": "AssetServiceClient",
142+
"rpcs": {
143+
"AnalyzeIamPolicy": {
144+
"methods": [
145+
"analyze_iam_policy"
146+
]
147+
},
148+
"AnalyzeIamPolicyLongrunning": {
149+
"methods": [
150+
"analyze_iam_policy_longrunning"
151+
]
152+
},
153+
"BatchGetAssetsHistory": {
154+
"methods": [
155+
"batch_get_assets_history"
156+
]
157+
},
158+
"CreateFeed": {
159+
"methods": [
160+
"create_feed"
161+
]
162+
},
163+
"DeleteFeed": {
164+
"methods": [
165+
"delete_feed"
166+
]
167+
},
168+
"ExportAssets": {
169+
"methods": [
170+
"export_assets"
171+
]
172+
},
173+
"GetFeed": {
174+
"methods": [
175+
"get_feed"
176+
]
177+
},
178+
"ListAssets": {
179+
"methods": [
180+
"list_assets"
181+
]
182+
},
183+
"ListFeeds": {
184+
"methods": [
185+
"list_feeds"
186+
]
187+
},
188+
"SearchAllIamPolicies": {
189+
"methods": [
190+
"search_all_iam_policies"
191+
]
192+
},
193+
"SearchAllResources": {
194+
"methods": [
195+
"search_all_resources"
196+
]
197+
},
198+
"UpdateFeed": {
199+
"methods": [
200+
"update_feed"
201+
]
202+
}
203+
}
139204
}
140205
}
141206
}

packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/client.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from .transports.base import AssetServiceTransport, DEFAULT_CLIENT_INFO
4444
from .transports.grpc import AssetServiceGrpcTransport
4545
from .transports.grpc_asyncio import AssetServiceGrpcAsyncIOTransport
46+
from .transports.rest import AssetServiceRestTransport
4647

4748

4849
class AssetServiceClientMeta(type):
@@ -55,6 +56,7 @@ class AssetServiceClientMeta(type):
5556
_transport_registry = OrderedDict() # type: Dict[str, Type[AssetServiceTransport]]
5657
_transport_registry["grpc"] = AssetServiceGrpcTransport
5758
_transport_registry["grpc_asyncio"] = AssetServiceGrpcAsyncIOTransport
59+
_transport_registry["rest"] = AssetServiceRestTransport
5860

5961
def get_transport_class(cls,
6062
label: str = None,
@@ -316,6 +318,9 @@ def __init__(self, *,
316318
transport (Union[str, AssetServiceTransport]): The
317319
transport to use. If set to None, a transport is chosen
318320
automatically.
321+
NOTE: "rest" transport functionality is currently in a
322+
beta state (preview). We welcome your feedback via an
323+
issue in this library's source repository.
319324
client_options (google.api_core.client_options.ClientOptions): Custom options for the
320325
client. It won't take effect if a ``transport`` instance is provided.
321326
(1) The ``api_endpoint`` property can be used to override the

packages/gapic-generator/tests/integration/goldens/asset/google/cloud/asset_v1/services/asset_service/transports/__init__.py

100644100755
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,20 @@
1919
from .base import AssetServiceTransport
2020
from .grpc import AssetServiceGrpcTransport
2121
from .grpc_asyncio import AssetServiceGrpcAsyncIOTransport
22+
from .rest import AssetServiceRestTransport
23+
from .rest import AssetServiceRestInterceptor
2224

2325

2426
# Compile a registry of transports.
2527
_transport_registry = OrderedDict() # type: Dict[str, Type[AssetServiceTransport]]
2628
_transport_registry['grpc'] = AssetServiceGrpcTransport
2729
_transport_registry['grpc_asyncio'] = AssetServiceGrpcAsyncIOTransport
30+
_transport_registry['rest'] = AssetServiceRestTransport
2831

2932
__all__ = (
3033
'AssetServiceTransport',
3134
'AssetServiceGrpcTransport',
3235
'AssetServiceGrpcAsyncIOTransport',
36+
'AssetServiceRestTransport',
37+
'AssetServiceRestInterceptor',
3338
)

0 commit comments

Comments
 (0)