diff --git a/packages/gapic-generator/gapic/schema/api.py b/packages/gapic-generator/gapic/schema/api.py index d86d4d29ea9a..7d982eef3aaa 100644 --- a/packages/gapic-generator/gapic/schema/api.py +++ b/packages/gapic-generator/gapic/schema/api.py @@ -101,6 +101,7 @@ class Proto: meta: metadata.Metadata = dataclasses.field( default_factory=metadata.Metadata, ) + resource_name_aliases: Mapping[str, str] = dataclasses.field(default_factory=dict) def __getattr__(self, name: str): return getattr(self.file_pb2, name) @@ -159,7 +160,7 @@ def messages(self) -> Mapping[str, wrappers.MessageType]: def resource_messages(self) -> Mapping[str, wrappers.MessageType]: """Return the file level resources of the proto.""" file_resource_messages = ( - (res.type, wrappers.CommonResource.build(res).message_type) + (res.type, wrappers.CommonResource.build(res, aliases=self.resource_name_aliases).message_type) for res in self.file_pb2.options.Extensions[ resource_pb2.resource_definition ] @@ -1214,6 +1215,7 @@ def proto(self) -> Proto: meta=metadata.Metadata( address=self.address, ), + resource_name_aliases=self.opts.resource_name_aliases, ) # If this is not a file being generated, we do not need to diff --git a/packages/gapic-generator/gapic/schema/wrappers.py b/packages/gapic-generator/gapic/schema/wrappers.py index e8d3378fb992..13fd99729320 100644 --- a/packages/gapic-generator/gapic/schema/wrappers.py +++ b/packages/gapic-generator/gapic/schema/wrappers.py @@ -2081,10 +2081,11 @@ def with_internal_methods(self, *, public_methods: Set[str]) -> "Method": class CommonResource: type_name: str pattern: str + resource_name_aliases: Mapping[str, str] = dataclasses.field(default_factory=dict) @classmethod - def build(cls, resource: resource_pb2.ResourceDescriptor): - return cls(type_name=resource.type, pattern=next(iter(resource.pattern))) + def build(cls, resource: resource_pb2.ResourceDescriptor, aliases: Optional[Mapping[str, str]] = None): + return cls(type_name=resource.type, pattern=next(iter(resource.pattern)), resource_name_aliases=aliases or {}) @utils.cached_property def message_type(self): @@ -2098,6 +2099,7 @@ def message_type(self): fields={}, nested_enums={}, nested_messages={}, + resource_name_aliases=self.resource_name_aliases, )