From 839fac47189552905a80d8443df90cd8f97829fe Mon Sep 17 00:00:00 2001 From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 08:27:55 -0400 Subject: [PATCH 1/2] feat: add ApplianceVersion, AvailableUpdates, MigratingVmView, UpgradeApplianceRequest, UpgradeApplianceResponse, UpgradeStatus (#64) --- google/cloud/vmmigration/__init__.py | 12 + google/cloud/vmmigration_v1/__init__.py | 12 + .../cloud/vmmigration_v1/gapic_metadata.json | 10 + .../services/vm_migration/async_client.py | 91 ++++++ .../services/vm_migration/client.py | 92 ++++++ .../services/vm_migration/transports/base.py | 14 + .../services/vm_migration/transports/grpc.py | 27 ++ .../vm_migration/transports/grpc_asyncio.py | 29 ++ google/cloud/vmmigration_v1/types/__init__.py | 12 + .../cloud/vmmigration_v1/types/vmmigration.py | 293 +++++++++++++++++- .../snippet_metadata_vmmigration_v1.json | 153 +++++++++ ...ed_vm_migration_upgrade_appliance_async.py | 49 +++ ...ted_vm_migration_upgrade_appliance_sync.py | 49 +++ scripts/fixup_vmmigration_v1_keywords.py | 5 +- .../gapic/vmmigration_v1/test_vm_migration.py | 169 ++++++++++ 15 files changed, 1009 insertions(+), 8 deletions(-) create mode 100644 samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py create mode 100644 samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py diff --git a/google/cloud/vmmigration/__init__.py b/google/cloud/vmmigration/__init__.py index d0e7a34..9042c60 100644 --- a/google/cloud/vmmigration/__init__.py +++ b/google/cloud/vmmigration/__init__.py @@ -21,7 +21,9 @@ from google.cloud.vmmigration_v1.types.vmmigration import ( AddGroupMigrationRequest, AddGroupMigrationResponse, + ApplianceVersion, AppliedLicense, + AvailableUpdates, CancelCloneJobRequest, CancelCloneJobResponse, CancelCutoverJobRequest, @@ -79,6 +81,7 @@ ListUtilizationReportsRequest, ListUtilizationReportsResponse, MigratingVm, + MigratingVmView, MigrationError, NetworkInterface, OperationMetadata, @@ -100,6 +103,9 @@ UpdateMigratingVmRequest, UpdateSourceRequest, UpdateTargetProjectRequest, + UpgradeApplianceRequest, + UpgradeApplianceResponse, + UpgradeStatus, UtilizationReport, UtilizationReportView, VmUtilizationInfo, @@ -114,7 +120,9 @@ "VmMigrationAsyncClient", "AddGroupMigrationRequest", "AddGroupMigrationResponse", + "ApplianceVersion", "AppliedLicense", + "AvailableUpdates", "CancelCloneJobRequest", "CancelCloneJobResponse", "CancelCutoverJobRequest", @@ -190,6 +198,9 @@ "UpdateMigratingVmRequest", "UpdateSourceRequest", "UpdateTargetProjectRequest", + "UpgradeApplianceRequest", + "UpgradeApplianceResponse", + "UpgradeStatus", "UtilizationReport", "VmUtilizationInfo", "VmUtilizationMetrics", @@ -199,5 +210,6 @@ "ComputeEngineBootOption", "ComputeEngineDiskType", "ComputeEngineLicenseType", + "MigratingVmView", "UtilizationReportView", ) diff --git a/google/cloud/vmmigration_v1/__init__.py b/google/cloud/vmmigration_v1/__init__.py index 1f5a138..9755c33 100644 --- a/google/cloud/vmmigration_v1/__init__.py +++ b/google/cloud/vmmigration_v1/__init__.py @@ -18,7 +18,9 @@ from .types.vmmigration import ( AddGroupMigrationRequest, AddGroupMigrationResponse, + ApplianceVersion, AppliedLicense, + AvailableUpdates, CancelCloneJobRequest, CancelCloneJobResponse, CancelCutoverJobRequest, @@ -76,6 +78,7 @@ ListUtilizationReportsRequest, ListUtilizationReportsResponse, MigratingVm, + MigratingVmView, MigrationError, NetworkInterface, OperationMetadata, @@ -97,6 +100,9 @@ UpdateMigratingVmRequest, UpdateSourceRequest, UpdateTargetProjectRequest, + UpgradeApplianceRequest, + UpgradeApplianceResponse, + UpgradeStatus, UtilizationReport, UtilizationReportView, VmUtilizationInfo, @@ -110,7 +116,9 @@ "VmMigrationAsyncClient", "AddGroupMigrationRequest", "AddGroupMigrationResponse", + "ApplianceVersion", "AppliedLicense", + "AvailableUpdates", "CancelCloneJobRequest", "CancelCloneJobResponse", "CancelCutoverJobRequest", @@ -168,6 +176,7 @@ "ListUtilizationReportsRequest", "ListUtilizationReportsResponse", "MigratingVm", + "MigratingVmView", "MigrationError", "NetworkInterface", "OperationMetadata", @@ -189,6 +198,9 @@ "UpdateMigratingVmRequest", "UpdateSourceRequest", "UpdateTargetProjectRequest", + "UpgradeApplianceRequest", + "UpgradeApplianceResponse", + "UpgradeStatus", "UtilizationReport", "UtilizationReportView", "VmMigrationClient", diff --git a/google/cloud/vmmigration_v1/gapic_metadata.json b/google/cloud/vmmigration_v1/gapic_metadata.json index f14f194..303e007 100644 --- a/google/cloud/vmmigration_v1/gapic_metadata.json +++ b/google/cloud/vmmigration_v1/gapic_metadata.json @@ -224,6 +224,11 @@ "methods": [ "update_target_project" ] + }, + "UpgradeAppliance": { + "methods": [ + "upgrade_appliance" + ] } } }, @@ -444,6 +449,11 @@ "methods": [ "update_target_project" ] + }, + "UpgradeAppliance": { + "methods": [ + "upgrade_appliance" + ] } } } diff --git a/google/cloud/vmmigration_v1/services/vm_migration/async_client.py b/google/cloud/vmmigration_v1/services/vm_migration/async_client.py index 4c8c6ab..a1c7410 100644 --- a/google/cloud/vmmigration_v1/services/vm_migration/async_client.py +++ b/google/cloud/vmmigration_v1/services/vm_migration/async_client.py @@ -1815,6 +1815,97 @@ async def sample_delete_datacenter_connector(): # Done; return the response. return response + async def upgrade_appliance( + self, + request: Union[vmmigration.UpgradeApplianceRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation_async.AsyncOperation: + r"""Upgrades the appliance relate to this + DatacenterConnector to the in-place updateable version. + + .. code-block:: python + + from google.cloud import vmmigration_v1 + + async def sample_upgrade_appliance(): + # Create a client + client = vmmigration_v1.VmMigrationAsyncClient() + + # Initialize request argument(s) + request = vmmigration_v1.UpgradeApplianceRequest( + datacenter_connector="datacenter_connector_value", + ) + + # Make the request + operation = client.upgrade_appliance(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.vmmigration_v1.types.UpgradeApplianceRequest, dict]): + The request object. Request message for + 'UpgradeAppliance' request. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation_async.AsyncOperation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.vmmigration_v1.types.UpgradeApplianceResponse` + Response message for 'UpgradeAppliance' request. + + """ + # Create or coerce a protobuf request object. + request = vmmigration.UpgradeApplianceRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = gapic_v1.method_async.wrap_method( + self._client._transport.upgrade_appliance, + default_timeout=None, + client_info=DEFAULT_CLIENT_INFO, + ) + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("datacenter_connector", request.datacenter_connector),) + ), + ) + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation_async.from_gapic( + response, + self._client._transport.operations_client, + vmmigration.UpgradeApplianceResponse, + metadata_type=vmmigration.OperationMetadata, + ) + + # Done; return the response. + return response + async def create_migrating_vm( self, request: Union[vmmigration.CreateMigratingVmRequest, dict] = None, diff --git a/google/cloud/vmmigration_v1/services/vm_migration/client.py b/google/cloud/vmmigration_v1/services/vm_migration/client.py index 993845f..7cbad36 100644 --- a/google/cloud/vmmigration_v1/services/vm_migration/client.py +++ b/google/cloud/vmmigration_v1/services/vm_migration/client.py @@ -2198,6 +2198,98 @@ def sample_delete_datacenter_connector(): # Done; return the response. return response + def upgrade_appliance( + self, + request: Union[vmmigration.UpgradeApplianceRequest, dict] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: float = None, + metadata: Sequence[Tuple[str, str]] = (), + ) -> operation.Operation: + r"""Upgrades the appliance relate to this + DatacenterConnector to the in-place updateable version. + + .. code-block:: python + + from google.cloud import vmmigration_v1 + + def sample_upgrade_appliance(): + # Create a client + client = vmmigration_v1.VmMigrationClient() + + # Initialize request argument(s) + request = vmmigration_v1.UpgradeApplianceRequest( + datacenter_connector="datacenter_connector_value", + ) + + # Make the request + operation = client.upgrade_appliance(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.vmmigration_v1.types.UpgradeApplianceRequest, dict]): + The request object. Request message for + 'UpgradeAppliance' request. + retry (google.api_core.retry.Retry): Designation of what errors, if any, + should be retried. + timeout (float): The timeout for this request. + metadata (Sequence[Tuple[str, str]]): Strings which should be + sent along with the request as metadata. + + Returns: + google.api_core.operation.Operation: + An object representing a long-running operation. + + The result type for the operation will be + :class:`google.cloud.vmmigration_v1.types.UpgradeApplianceResponse` + Response message for 'UpgradeAppliance' request. + + """ + # Create or coerce a protobuf request object. + # Minor optimization to avoid making a copy if the user passes + # in a vmmigration.UpgradeApplianceRequest. + # There's no risk of modifying the input as we've already verified + # there are no flattened fields. + if not isinstance(request, vmmigration.UpgradeApplianceRequest): + request = vmmigration.UpgradeApplianceRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.upgrade_appliance] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("datacenter_connector", request.datacenter_connector),) + ), + ) + + # Send the request. + response = rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Wrap the response in an operation future. + response = operation.from_gapic( + response, + self._transport.operations_client, + vmmigration.UpgradeApplianceResponse, + metadata_type=vmmigration.OperationMetadata, + ) + + # Done; return the response. + return response + def create_migrating_vm( self, request: Union[vmmigration.CreateMigratingVmRequest, dict] = None, diff --git a/google/cloud/vmmigration_v1/services/vm_migration/transports/base.py b/google/cloud/vmmigration_v1/services/vm_migration/transports/base.py index b0323da..59604a0 100644 --- a/google/cloud/vmmigration_v1/services/vm_migration/transports/base.py +++ b/google/cloud/vmmigration_v1/services/vm_migration/transports/base.py @@ -198,6 +198,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=None, client_info=client_info, ), + self.upgrade_appliance: gapic_v1.method.wrap_method( + self.upgrade_appliance, + default_timeout=None, + client_info=client_info, + ), self.create_migrating_vm: gapic_v1.method.wrap_method( self.create_migrating_vm, default_timeout=None, @@ -498,6 +503,15 @@ def delete_datacenter_connector( ]: raise NotImplementedError() + @property + def upgrade_appliance( + self, + ) -> Callable[ + [vmmigration.UpgradeApplianceRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + @property def create_migrating_vm( self, diff --git a/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc.py b/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc.py index fc515ec..107293d 100644 --- a/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc.py +++ b/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc.py @@ -634,6 +634,33 @@ def delete_datacenter_connector( ) return self._stubs["delete_datacenter_connector"] + @property + def upgrade_appliance( + self, + ) -> Callable[[vmmigration.UpgradeApplianceRequest], operations_pb2.Operation]: + r"""Return a callable for the upgrade appliance method over gRPC. + + Upgrades the appliance relate to this + DatacenterConnector to the in-place updateable version. + + Returns: + Callable[[~.UpgradeApplianceRequest], + ~.Operation]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "upgrade_appliance" not in self._stubs: + self._stubs["upgrade_appliance"] = self.grpc_channel.unary_unary( + "/google.cloud.vmmigration.v1.VmMigration/UpgradeAppliance", + request_serializer=vmmigration.UpgradeApplianceRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["upgrade_appliance"] + @property def create_migrating_vm( self, diff --git a/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc_asyncio.py b/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc_asyncio.py index 39f38b7..9bca8cc 100644 --- a/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc_asyncio.py +++ b/google/cloud/vmmigration_v1/services/vm_migration/transports/grpc_asyncio.py @@ -654,6 +654,35 @@ def delete_datacenter_connector( ) return self._stubs["delete_datacenter_connector"] + @property + def upgrade_appliance( + self, + ) -> Callable[ + [vmmigration.UpgradeApplianceRequest], Awaitable[operations_pb2.Operation] + ]: + r"""Return a callable for the upgrade appliance method over gRPC. + + Upgrades the appliance relate to this + DatacenterConnector to the in-place updateable version. + + Returns: + Callable[[~.UpgradeApplianceRequest], + Awaitable[~.Operation]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "upgrade_appliance" not in self._stubs: + self._stubs["upgrade_appliance"] = self.grpc_channel.unary_unary( + "/google.cloud.vmmigration.v1.VmMigration/UpgradeAppliance", + request_serializer=vmmigration.UpgradeApplianceRequest.serialize, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["upgrade_appliance"] + @property def create_migrating_vm( self, diff --git a/google/cloud/vmmigration_v1/types/__init__.py b/google/cloud/vmmigration_v1/types/__init__.py index eaf9b43..6acd160 100644 --- a/google/cloud/vmmigration_v1/types/__init__.py +++ b/google/cloud/vmmigration_v1/types/__init__.py @@ -16,7 +16,9 @@ from .vmmigration import ( AddGroupMigrationRequest, AddGroupMigrationResponse, + ApplianceVersion, AppliedLicense, + AvailableUpdates, CancelCloneJobRequest, CancelCloneJobResponse, CancelCutoverJobRequest, @@ -74,6 +76,7 @@ ListUtilizationReportsRequest, ListUtilizationReportsResponse, MigratingVm, + MigratingVmView, MigrationError, NetworkInterface, OperationMetadata, @@ -95,6 +98,9 @@ UpdateMigratingVmRequest, UpdateSourceRequest, UpdateTargetProjectRequest, + UpgradeApplianceRequest, + UpgradeApplianceResponse, + UpgradeStatus, UtilizationReport, UtilizationReportView, VmUtilizationInfo, @@ -107,7 +113,9 @@ __all__ = ( "AddGroupMigrationRequest", "AddGroupMigrationResponse", + "ApplianceVersion", "AppliedLicense", + "AvailableUpdates", "CancelCloneJobRequest", "CancelCloneJobResponse", "CancelCutoverJobRequest", @@ -183,6 +191,9 @@ "UpdateMigratingVmRequest", "UpdateSourceRequest", "UpdateTargetProjectRequest", + "UpgradeApplianceRequest", + "UpgradeApplianceResponse", + "UpgradeStatus", "UtilizationReport", "VmUtilizationInfo", "VmUtilizationMetrics", @@ -192,5 +203,6 @@ "ComputeEngineBootOption", "ComputeEngineDiskType", "ComputeEngineLicenseType", + "MigratingVmView", "UtilizationReportView", ) diff --git a/google/cloud/vmmigration_v1/types/vmmigration.py b/google/cloud/vmmigration_v1/types/vmmigration.py index b59c695..4682860 100644 --- a/google/cloud/vmmigration_v1/types/vmmigration.py +++ b/google/cloud/vmmigration_v1/types/vmmigration.py @@ -24,6 +24,7 @@ package="google.cloud.vmmigration.v1", manifest={ "UtilizationReportView", + "MigratingVmView", "ComputeEngineDiskType", "ComputeEngineLicenseType", "ComputeEngineBootOption", @@ -41,6 +42,9 @@ "Source", "VmwareSourceDetails", "DatacenterConnector", + "UpgradeStatus", + "AvailableUpdates", + "ApplianceVersion", "ListSourcesRequest", "ListSourcesResponse", "GetSourceRequest", @@ -63,6 +67,8 @@ "GetDatacenterConnectorRequest", "CreateDatacenterConnectorRequest", "DeleteDatacenterConnectorRequest", + "UpgradeApplianceRequest", + "UpgradeApplianceResponse", "ListDatacenterConnectorsRequest", "ComputeEngineTargetDefaults", "ComputeEngineTargetDetails", @@ -122,6 +128,13 @@ class UtilizationReportView(proto.Enum): FULL = 2 +class MigratingVmView(proto.Enum): + r"""Controls the level of details of a Migrating VM.""" + MIGRATING_VM_VIEW_UNSPECIFIED = 0 + MIGRATING_VM_VIEW_BASIC = 1 + MIGRATING_VM_VIEW_FULL = 2 + + class ComputeEngineDiskType(proto.Enum): r"""Types of disks supported for Compute Engine VM.""" COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED = 0 @@ -238,10 +251,25 @@ class MigratingVm(proto.Message): resource. labels (Mapping[str, str]): The labels of the migrating VM. + recent_clone_jobs (Sequence[google.cloud.vmmigration_v1.types.CloneJob]): + Output only. The recent [clone + jobs][google.cloud.vmmigration.v1.CloneJob] performed on the + migrating VM. This field holds the vm's last completed clone + job and the vm's running clone job, if one exists. Note: To + have this field populated you need to explicitly request it + via the "view" parameter of the Get/List request. error (google.rpc.status_pb2.Status): Output only. Provides details on the state of the Migrating VM in case of an error in replication. + recent_cutover_jobs (Sequence[google.cloud.vmmigration_v1.types.CutoverJob]): + Output only. The recent cutover jobs + performed on the migrating VM. This field holds + the vm's last completed cutover job and the vm's + running cutover job, if one exists. + Note: To have this field populated you need to + explicitly request it via the "view" parameter + of the Get/List request. """ class State(proto.Enum): @@ -325,11 +353,21 @@ class State(proto.Enum): proto.STRING, number=16, ) + recent_clone_jobs = proto.RepeatedField( + proto.MESSAGE, + number=17, + message="CloneJob", + ) error = proto.Field( proto.MESSAGE, number=19, message=status_pb2.Status, ) + recent_cutover_jobs = proto.RepeatedField( + proto.MESSAGE, + number=20, + message="CutoverJob", + ) class CloneJob(proto.Message): @@ -358,8 +396,11 @@ class CloneJob(proto.Message): Output only. The time the clone job was created (as an API call, not when it was actually created in the target). + end_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. The time the clone job was + ended. name (str): - The name of the clone. + Output only. The name of the clone. state (google.cloud.vmmigration_v1.types.CloneJob.State): Output only. State of the clone job. state_time (google.protobuf.timestamp_pb2.Timestamp): @@ -392,6 +433,11 @@ class State(proto.Enum): number=1, message=timestamp_pb2.Timestamp, ) + end_time = proto.Field( + proto.MESSAGE, + number=22, + message=timestamp_pb2.Timestamp, + ) name = proto.Field( proto.STRING, number=3, @@ -431,6 +477,9 @@ class CutoverJob(proto.Message): Output only. The time the cutover job was created (as an API call, not when it was actually created in the target). + end_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. The time the cutover job had + finished. name (str): Output only. The name of the cutover job. state (google.cloud.vmmigration_v1.types.CutoverJob.State): @@ -471,6 +520,11 @@ class State(proto.Enum): number=1, message=timestamp_pb2.Timestamp, ) + end_time = proto.Field( + proto.MESSAGE, + number=16, + message=timestamp_pb2.Timestamp, + ) name = proto.Field( proto.STRING, number=3, @@ -797,6 +851,23 @@ class DatacenterConnector(proto.Message): error (google.rpc.status_pb2.Status): Output only. Provides details on the state of the Datacenter Connector in case of an error. + appliance_infrastructure_version (str): + Output only. Appliance OVA version. + This is the OVA which is manually installed by + the user and contains the infrastructure for the + automatically updatable components on the + appliance. + appliance_software_version (str): + Output only. Appliance last installed update + bundle version. This is the version of the + automatically updatable components on the + appliance. + available_versions (google.cloud.vmmigration_v1.types.AvailableUpdates): + Output only. The available versions for + updating this appliance. + upgrade_status (google.cloud.vmmigration_v1.types.UpgradeStatus): + Output only. The status of the current / last + upgradeAppliance operation. """ class State(proto.Enum): @@ -852,6 +923,135 @@ class State(proto.Enum): number=11, message=status_pb2.Status, ) + appliance_infrastructure_version = proto.Field( + proto.STRING, + number=13, + ) + appliance_software_version = proto.Field( + proto.STRING, + number=14, + ) + available_versions = proto.Field( + proto.MESSAGE, + number=15, + message="AvailableUpdates", + ) + upgrade_status = proto.Field( + proto.MESSAGE, + number=16, + message="UpgradeStatus", + ) + + +class UpgradeStatus(proto.Message): + r"""UpgradeStatus contains information about upgradeAppliance + operation. + + Attributes: + version (str): + The version to upgrade to. + state (google.cloud.vmmigration_v1.types.UpgradeStatus.State): + The state of the upgradeAppliance operation. + error (google.rpc.status_pb2.Status): + Provides details on the state of the upgrade + operation in case of an error. + start_time (google.protobuf.timestamp_pb2.Timestamp): + The time the operation was started. + previous_version (str): + The version from which we upgraded. + """ + + class State(proto.Enum): + r"""The possible values of the state.""" + STATE_UNSPECIFIED = 0 + RUNNING = 1 + FAILED = 2 + SUCCEEDED = 3 + + version = proto.Field( + proto.STRING, + number=1, + ) + state = proto.Field( + proto.ENUM, + number=2, + enum=State, + ) + error = proto.Field( + proto.MESSAGE, + number=3, + message=status_pb2.Status, + ) + start_time = proto.Field( + proto.MESSAGE, + number=4, + message=timestamp_pb2.Timestamp, + ) + previous_version = proto.Field( + proto.STRING, + number=5, + ) + + +class AvailableUpdates(proto.Message): + r"""Holds informatiom about the available versions for upgrade. + + Attributes: + new_deployable_appliance (google.cloud.vmmigration_v1.types.ApplianceVersion): + The newest deployable version of the + appliance. The current appliance can't be + updated into this version, and the owner must + manually deploy this OVA to a new appliance. + in_place_update (google.cloud.vmmigration_v1.types.ApplianceVersion): + The latest version for in place update. + The current appliance can be updated to this + version using the API or m4c CLI. + """ + + new_deployable_appliance = proto.Field( + proto.MESSAGE, + number=1, + message="ApplianceVersion", + ) + in_place_update = proto.Field( + proto.MESSAGE, + number=2, + message="ApplianceVersion", + ) + + +class ApplianceVersion(proto.Message): + r"""Describes an appliance version. + + Attributes: + version (str): + The appliance version. + uri (str): + A link for downloading the version. + critical (bool): + Determine whether it's critical to upgrade + the appliance to this version. + release_notes_uri (str): + Link to a page that contains the version + release notes. + """ + + version = proto.Field( + proto.STRING, + number=1, + ) + uri = proto.Field( + proto.STRING, + number=2, + ) + critical = proto.Field( + proto.BOOL, + number=3, + ) + release_notes_uri = proto.Field( + proto.STRING, + number=4, + ) class ListSourcesRequest(proto.Message): @@ -1141,7 +1341,7 @@ class VmwareVmDetails(proto.Message): the VM in MB. guest_description (str): The VM's OS. See for example - https://pubs.vmware.com/vi-sdk/visdk250/ReferenceGuide/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html + https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold. boot_option (google.cloud.vmmigration_v1.types.VmwareVmDetails.BootOption): Output only. The VM Boot Option. @@ -1236,8 +1436,8 @@ class FetchInventoryResponse(proto.Message): Attributes: vmware_vms (google.cloud.vmmigration_v1.types.VmwareVmsDetails): - Output only. The description of the VMs in a - Source of type Vmware. + The description of the VMs in a Source of + type Vmware. This field is a member of `oneof`_ ``SourceVms``. update_time (google.protobuf.timestamp_pb2.Timestamp): @@ -1795,6 +1995,46 @@ class DeleteDatacenterConnectorRequest(proto.Message): ) +class UpgradeApplianceRequest(proto.Message): + r"""Request message for 'UpgradeAppliance' request. + + Attributes: + datacenter_connector (str): + Required. The DatacenterConnector name. + request_id (str): + A request ID to identify requests. Specify a + unique request ID so that if you must retry your + request, the server will know to ignore the + request if it has already been completed. The + server will guarantee that for at least 60 + minutes after the first request. + For example, consider a situation where you make + an initial request and t he request times out. + If you make the request again with the same + request ID, the server can check if original + operation with the same request ID was received, + and if so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + The request ID must be a valid UUID with the + exception that zero UUID is not supported + (00000000-0000-0000-0000-000000000000). + """ + + datacenter_connector = proto.Field( + proto.STRING, + number=1, + ) + request_id = proto.Field( + proto.STRING, + number=2, + ) + + +class UpgradeApplianceResponse(proto.Message): + r"""Response message for 'UpgradeAppliance' request.""" + + class ListDatacenterConnectorsRequest(proto.Message): r"""Request message for 'ListDatacenterConnectors' request. @@ -1891,6 +2131,10 @@ class ComputeEngineTargetDefaults(proto.Message): metadata (Mapping[str, str]): The metadata key/value pairs to assign to the VM. + additional_licenses (Sequence[str]): + Additional licenses to assign to the VM. + hostname (str): + The hostname to assign to the VM. """ vm_name = proto.Field( @@ -1965,6 +2209,14 @@ class ComputeEngineTargetDefaults(proto.Message): proto.STRING, number=16, ) + additional_licenses = proto.RepeatedField( + proto.STRING, + number=17, + ) + hostname = proto.Field( + proto.STRING, + number=18, + ) class ComputeEngineTargetDetails(proto.Message): @@ -2011,6 +2263,10 @@ class ComputeEngineTargetDetails(proto.Message): metadata (Mapping[str, str]): The metadata key/value pairs to assign to the VM. + additional_licenses (Sequence[str]): + Additional licenses to assign to the VM. + hostname (str): + The hostname to assign to the VM. """ vm_name = proto.Field( @@ -2085,6 +2341,14 @@ class ComputeEngineTargetDetails(proto.Message): proto.STRING, number=16, ) + additional_licenses = proto.RepeatedField( + proto.STRING, + number=17, + ) + hostname = proto.Field( + proto.STRING, + number=18, + ) class NetworkInterface(proto.Message): @@ -2353,6 +2617,9 @@ class ListMigratingVmsRequest(proto.Message): Optional. The filter request. order_by (str): Optional. the order by fields for the result. + view (google.cloud.vmmigration_v1.types.MigratingVmView): + Optional. The level of details of each + migrating VM. """ parent = proto.Field( @@ -2375,6 +2642,11 @@ class ListMigratingVmsRequest(proto.Message): proto.STRING, number=5, ) + view = proto.Field( + proto.ENUM, + number=6, + enum="MigratingVmView", + ) class ListMigratingVmsResponse(proto.Message): @@ -2418,12 +2690,20 @@ class GetMigratingVmRequest(proto.Message): Attributes: name (str): Required. The name of the MigratingVm. + view (google.cloud.vmmigration_v1.types.MigratingVmView): + Optional. The level of details of the + migrating VM. """ name = proto.Field( proto.STRING, number=1, ) + view = proto.Field( + proto.ENUM, + number=2, + enum="MigratingVmView", + ) class UpdateMigratingVmRequest(proto.Message): @@ -2567,7 +2847,7 @@ class TargetProject(proto.Message): Attributes: name (str): - The name of the target project. + Output only. The name of the target project. project (str): The target project ID (number) or project name. @@ -2844,7 +3124,7 @@ class Group(proto.Message): Attributes: name (str): - The Group name. + Output only. The Group name. create_time (google.protobuf.timestamp_pb2.Timestamp): Output only. The create time timestamp. update_time (google.protobuf.timestamp_pb2.Timestamp): @@ -3418,6 +3698,7 @@ class ErrorCode(proto.Enum): CLONE_ERROR = 6 CUTOVER_ERROR = 7 UTILIZATION_REPORT_ERROR = 8 + APPLIANCE_UPGRADE_ERROR = 9 code = proto.Field( proto.ENUM, diff --git a/samples/generated_samples/snippet_metadata_vmmigration_v1.json b/samples/generated_samples/snippet_metadata_vmmigration_v1.json index b6631d2..491a3d9 100644 --- a/samples/generated_samples/snippet_metadata_vmmigration_v1.json +++ b/samples/generated_samples/snippet_metadata_vmmigration_v1.json @@ -7076,6 +7076,159 @@ } ], "title": "vmmigration_v1_generated_vm_migration_update_target_project_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.vmmigration_v1.VmMigrationAsyncClient", + "shortName": "VmMigrationAsyncClient" + }, + "fullName": "google.cloud.vmmigration_v1.VmMigrationAsyncClient.upgrade_appliance", + "method": { + "fullName": "google.cloud.vmmigration.v1.VmMigration.UpgradeAppliance", + "service": { + "fullName": "google.cloud.vmmigration.v1.VmMigration", + "shortName": "VmMigration" + }, + "shortName": "UpgradeAppliance" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.vmmigration_v1.types.UpgradeApplianceRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, str]" + } + ], + "resultType": "google.api_core.operation_async.AsyncOperation", + "shortName": "upgrade_appliance" + }, + "description": "Sample for UpgradeAppliance", + "file": "vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "vmmigration_v1_generated_VmMigration_UpgradeAppliance_async", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ], + "title": "vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.vmmigration_v1.VmMigrationClient", + "shortName": "VmMigrationClient" + }, + "fullName": "google.cloud.vmmigration_v1.VmMigrationClient.upgrade_appliance", + "method": { + "fullName": "google.cloud.vmmigration.v1.VmMigration.UpgradeAppliance", + "service": { + "fullName": "google.cloud.vmmigration.v1.VmMigration", + "shortName": "VmMigration" + }, + "shortName": "UpgradeAppliance" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.vmmigration_v1.types.UpgradeApplianceRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, str]" + } + ], + "resultType": "google.api_core.operation.Operation", + "shortName": "upgrade_appliance" + }, + "description": "Sample for UpgradeAppliance", + "file": "vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "vmmigration_v1_generated_VmMigration_UpgradeAppliance_sync", + "segments": [ + { + "end": 48, + "start": 27, + "type": "FULL" + }, + { + "end": 48, + "start": 27, + "type": "SHORT" + }, + { + "end": 33, + "start": 31, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 38, + "start": 34, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 45, + "start": 39, + "type": "REQUEST_EXECUTION" + }, + { + "end": 49, + "start": 46, + "type": "RESPONSE_HANDLING" + } + ], + "title": "vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py" } ] } diff --git a/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py b/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py new file mode 100644 index 0000000..a0f0eda --- /dev/null +++ b/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_async.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpgradeAppliance +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-vm-migration + + +# [START vmmigration_v1_generated_VmMigration_UpgradeAppliance_async] +from google.cloud import vmmigration_v1 + + +async def sample_upgrade_appliance(): + # Create a client + client = vmmigration_v1.VmMigrationAsyncClient() + + # Initialize request argument(s) + request = vmmigration_v1.UpgradeApplianceRequest( + datacenter_connector="datacenter_connector_value", + ) + + # Make the request + operation = client.upgrade_appliance(request=request) + + print("Waiting for operation to complete...") + + response = await operation.result() + + # Handle the response + print(response) + +# [END vmmigration_v1_generated_VmMigration_UpgradeAppliance_async] diff --git a/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py b/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py new file mode 100644 index 0000000..7fc15cf --- /dev/null +++ b/samples/generated_samples/vmmigration_v1_generated_vm_migration_upgrade_appliance_sync.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Copyright 2022 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Generated code. DO NOT EDIT! +# +# Snippet for UpgradeAppliance +# NOTE: This snippet has been automatically generated for illustrative purposes only. +# It may require modifications to work in your environment. + +# To install the latest published package dependency, execute the following: +# python3 -m pip install google-cloud-vm-migration + + +# [START vmmigration_v1_generated_VmMigration_UpgradeAppliance_sync] +from google.cloud import vmmigration_v1 + + +def sample_upgrade_appliance(): + # Create a client + client = vmmigration_v1.VmMigrationClient() + + # Initialize request argument(s) + request = vmmigration_v1.UpgradeApplianceRequest( + datacenter_connector="datacenter_connector_value", + ) + + # Make the request + operation = client.upgrade_appliance(request=request) + + print("Waiting for operation to complete...") + + response = operation.result() + + # Handle the response + print(response) + +# [END vmmigration_v1_generated_VmMigration_UpgradeAppliance_sync] diff --git a/scripts/fixup_vmmigration_v1_keywords.py b/scripts/fixup_vmmigration_v1_keywords.py index 5c1b694..59c565b 100644 --- a/scripts/fixup_vmmigration_v1_keywords.py +++ b/scripts/fixup_vmmigration_v1_keywords.py @@ -62,7 +62,7 @@ class vmmigrationCallTransformer(cst.CSTTransformer): 'get_cutover_job': ('name', ), 'get_datacenter_connector': ('name', ), 'get_group': ('name', ), - 'get_migrating_vm': ('name', ), + 'get_migrating_vm': ('name', 'view', ), 'get_source': ('name', ), 'get_target_project': ('name', ), 'get_utilization_report': ('name', 'view', ), @@ -70,7 +70,7 @@ class vmmigrationCallTransformer(cst.CSTTransformer): 'list_cutover_jobs': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), 'list_datacenter_connectors': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), 'list_groups': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), - 'list_migrating_vms': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), + 'list_migrating_vms': ('parent', 'page_token', 'page_size', 'filter', 'order_by', 'view', ), 'list_sources': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), 'list_target_projects': ('parent', 'page_token', 'page_size', 'filter', 'order_by', ), 'list_utilization_reports': ('parent', 'page_token', 'view', 'page_size', 'filter', 'order_by', ), @@ -82,6 +82,7 @@ class vmmigrationCallTransformer(cst.CSTTransformer): 'update_migrating_vm': ('migrating_vm', 'update_mask', 'request_id', ), 'update_source': ('source', 'update_mask', 'request_id', ), 'update_target_project': ('target_project', 'update_mask', 'request_id', ), + 'upgrade_appliance': ('datacenter_connector', 'request_id', ), } def leave_Call(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode: diff --git a/tests/unit/gapic/vmmigration_v1/test_vm_migration.py b/tests/unit/gapic/vmmigration_v1/test_vm_migration.py index d6d526c..9be69ae 100644 --- a/tests/unit/gapic/vmmigration_v1/test_vm_migration.py +++ b/tests/unit/gapic/vmmigration_v1/test_vm_migration.py @@ -3978,6 +3978,8 @@ def test_get_datacenter_connector(request_type, transport: str = "grpc"): version="version_value", bucket="bucket_value", state=vmmigration.DatacenterConnector.State.PENDING, + appliance_infrastructure_version="appliance_infrastructure_version_value", + appliance_software_version="appliance_software_version_value", ) response = client.get_datacenter_connector(request) @@ -3994,6 +3996,11 @@ def test_get_datacenter_connector(request_type, transport: str = "grpc"): assert response.version == "version_value" assert response.bucket == "bucket_value" assert response.state == vmmigration.DatacenterConnector.State.PENDING + assert ( + response.appliance_infrastructure_version + == "appliance_infrastructure_version_value" + ) + assert response.appliance_software_version == "appliance_software_version_value" def test_get_datacenter_connector_empty_call(): @@ -4041,6 +4048,8 @@ async def test_get_datacenter_connector_async( version="version_value", bucket="bucket_value", state=vmmigration.DatacenterConnector.State.PENDING, + appliance_infrastructure_version="appliance_infrastructure_version_value", + appliance_software_version="appliance_software_version_value", ) ) response = await client.get_datacenter_connector(request) @@ -4058,6 +4067,11 @@ async def test_get_datacenter_connector_async( assert response.version == "version_value" assert response.bucket == "bucket_value" assert response.state == vmmigration.DatacenterConnector.State.PENDING + assert ( + response.appliance_infrastructure_version + == "appliance_infrastructure_version_value" + ) + assert response.appliance_software_version == "appliance_software_version_value" @pytest.mark.asyncio @@ -4730,6 +4744,160 @@ async def test_delete_datacenter_connector_flattened_error_async(): ) +@pytest.mark.parametrize( + "request_type", + [ + vmmigration.UpgradeApplianceRequest, + dict, + ], +) +def test_upgrade_appliance(request_type, transport: str = "grpc"): + client = VmMigrationClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.upgrade_appliance), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation(name="operations/spam") + response = client.upgrade_appliance(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == vmmigration.UpgradeApplianceRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +def test_upgrade_appliance_empty_call(): + # This test is a coverage failsafe to make sure that totally empty calls, + # i.e. request == None and no flattened fields passed, work. + client = VmMigrationClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.upgrade_appliance), "__call__" + ) as call: + client.upgrade_appliance() + call.assert_called() + _, args, _ = call.mock_calls[0] + assert args[0] == vmmigration.UpgradeApplianceRequest() + + +@pytest.mark.asyncio +async def test_upgrade_appliance_async( + transport: str = "grpc_asyncio", request_type=vmmigration.UpgradeApplianceRequest +): + client = VmMigrationAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.upgrade_appliance), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/spam") + ) + response = await client.upgrade_appliance(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == vmmigration.UpgradeApplianceRequest() + + # Establish that the response is the type that we expect. + assert isinstance(response, future.Future) + + +@pytest.mark.asyncio +async def test_upgrade_appliance_async_from_dict(): + await test_upgrade_appliance_async(request_type=dict) + + +def test_upgrade_appliance_field_headers(): + client = VmMigrationClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = vmmigration.UpgradeApplianceRequest() + + request.datacenter_connector = "datacenter_connector_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.upgrade_appliance), "__call__" + ) as call: + call.return_value = operations_pb2.Operation(name="operations/op") + client.upgrade_appliance(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "datacenter_connector=datacenter_connector_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_upgrade_appliance_field_headers_async(): + client = VmMigrationAsyncClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = vmmigration.UpgradeApplianceRequest() + + request.datacenter_connector = "datacenter_connector_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.upgrade_appliance), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation(name="operations/op") + ) + await client.upgrade_appliance(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "datacenter_connector=datacenter_connector_value", + ) in kw["metadata"] + + @pytest.mark.parametrize( "request_type", [ @@ -12809,6 +12977,7 @@ def test_vm_migration_base_transport(): "get_datacenter_connector", "create_datacenter_connector", "delete_datacenter_connector", + "upgrade_appliance", "create_migrating_vm", "list_migrating_vms", "get_migrating_vm", From 4c2341c91057a60a1b0abcf1ac5a113a411eeb76 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 09:09:14 -0400 Subject: [PATCH 2/2] chore(main): release 1.3.0 (#65) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- CHANGELOG.md | 7 +++++++ setup.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dee931b..4f9896b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [1.3.0](https://github.com/googleapis/python-vm-migration/compare/v1.2.0...v1.3.0) (2022-07-19) + + +### Features + +* add ApplianceVersion, AvailableUpdates, MigratingVmView, UpgradeApplianceRequest, UpgradeApplianceResponse, UpgradeStatus ([#64](https://github.com/googleapis/python-vm-migration/issues/64)) ([839fac4](https://github.com/googleapis/python-vm-migration/commit/839fac47189552905a80d8443df90cd8f97829fe)) + ## [1.2.0](https://github.com/googleapis/python-vm-migration/compare/v1.1.2...v1.2.0) (2022-07-16) diff --git a/setup.py b/setup.py index 8310377..93c6fa8 100644 --- a/setup.py +++ b/setup.py @@ -21,7 +21,7 @@ name = "google-cloud-vm-migration" description = "Cloud VM Migration API client library" -version = "1.2.0" +version = "1.3.0" url = "https://github.com/googleapis/python-vm-migration" release_status = "Development Status :: 5 - Production/Stable" dependencies = [