Skip to content

Commit

Permalink
[releases/2.1] Cherry-pick: [High Priority] Client generator: provide…
Browse files Browse the repository at this point in the history
… support backward compatibility for Older libraries (#949) (#951)

[High Priority] Client generator: provide support backward compatibility for Older libraries (#949)

* fix: get version details from the resolve service with information api in the client generator

(cherry picked from commit 992c280)
  • Loading branch information
Jotheeswaran-Nandagopal authored Sep 27, 2024
1 parent 4acfa3c commit 7c19d3c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
extract_base_service_class,
get_configuration_and_output_metadata_by_index,
get_configuration_parameters_with_type_and_default_values,
get_measurement_service_stub,
get_measurement_service_stub_and_version,
get_output_parameters_with_type,
get_all_registered_measurement_info,
get_selected_measurement_service_class,
Expand Down Expand Up @@ -65,7 +65,7 @@ def _create_client(
enum_values_by_type: Dict[Type[Enum], Dict[str, int]] = {}
type_url_prefix = "type.googleapis.com/"

measurement_service_stub = get_measurement_service_stub(
measurement_service_stub, measurement_version = get_measurement_service_stub_and_version(
discovery_client, channel_pool, measurement_service_class
)
metadata = measurement_service_stub.GetMetadata(v2_measurement_service_pb2.GetMetadataRequest())
Expand All @@ -88,7 +88,7 @@ def _create_client(
directory_out=directory_out,
class_name=class_name,
display_name=metadata.measurement_details.display_name,
version=metadata.measurement_details.version,
version=measurement_version,
configuration_metadata=configuration_metadata,
output_metadata=output_metadata,
service_class=measurement_service_class,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,25 +64,38 @@
]


def get_measurement_service_stub(
def get_measurement_service_stub_and_version(
discovery_client: DiscoveryClient,
channel_pool: GrpcChannelPool,
service_class: str,
) -> v2_measurement_service_pb2_grpc.MeasurementServiceStub:
"""Returns the measurement service stub of the given service class."""
) -> Tuple[v2_measurement_service_pb2_grpc.MeasurementServiceStub, str]:
"""Returns the measurement service stub and version of the given service class."""
try:
service_location = discovery_client.resolve_service(
service_location, service_info = discovery_client.resolve_service_with_information(
_V2_MEASUREMENT_SERVICE_INTERFACE, service_class
)
except grpc.RpcError as e:
if e.code() == grpc.StatusCode.NOT_FOUND:
raise click.ClickException(
f"Could not find any registered measurement with the service class: '{service_class}'."
)
elif e.code() == grpc.StatusCode.UNIMPLEMENTED:
raise click.ClickException(
"The Measurement Plug-In Client generator requires InstrumentStudio Professional version 2024 Q4 or higher."
)
else:
raise
channel = channel_pool.get_channel(service_location.insecure_address)
return v2_measurement_service_pb2_grpc.MeasurementServiceStub(channel)

if not service_info.versions:
raise click.ClickException(
"The Measurement Plug-In Client generator requires InstrumentStudio Professional version 2024 Q4 or higher."
)

return (
v2_measurement_service_pb2_grpc.MeasurementServiceStub(channel),
service_info.versions[0],
)


def get_all_registered_measurement_info(
Expand Down

0 comments on commit 7c19d3c

Please sign in to comment.