diff --git a/google/cloud/clouddms_v1/services/data_migration_service/async_client.py b/google/cloud/clouddms_v1/services/data_migration_service/async_client.py index 73e3ca5..726cc38 100644 --- a/google/cloud/clouddms_v1/services/data_migration_service/async_client.py +++ b/google/cloud/clouddms_v1/services/data_migration_service/async_client.py @@ -19,13 +19,15 @@ from typing import Dict, Sequence, Tuple, Type, Union import pkg_resources -import google.api_core.client_options as ClientOptions # type: ignore +from google.api_core.client_options import ClientOptions # type: ignore from google.api_core import exceptions as core_exceptions # type: ignore from google.api_core import gapic_v1 # type: ignore from google.api_core import retry as retries # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.clouddms_v1.services.data_migration_service import pagers @@ -180,17 +182,17 @@ def __init__( async def list_migration_jobs( self, - request: clouddms.ListMigrationJobsRequest = None, + request: Union[clouddms.ListMigrationJobsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMigrationJobsAsyncPager: r"""Lists migration jobs in a given project and location. Args: - request (:class:`google.cloud.clouddms_v1.types.ListMigrationJobsRequest`): + request (Union[google.cloud.clouddms_v1.types.ListMigrationJobsRequest, dict]): The request object. Retrieve a list of all migration jobs in a given project and location. parent (:class:`str`): @@ -260,17 +262,17 @@ async def list_migration_jobs( async def get_migration_job( self, - request: clouddms.GetMigrationJobRequest = None, + request: Union[clouddms.GetMigrationJobRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms_resources.MigrationJob: r"""Gets details of a single migration job. Args: - request (:class:`google.cloud.clouddms_v1.types.GetMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.GetMigrationJobRequest, dict]): The request object. Request message for 'GetMigrationJob' request. name (:class:`str`): @@ -331,12 +333,12 @@ async def get_migration_job( async def create_migration_job( self, - request: clouddms.CreateMigrationJobRequest = None, + request: Union[clouddms.CreateMigrationJobRequest, dict] = None, *, parent: str = None, migration_job: clouddms_resources.MigrationJob = None, migration_job_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -344,7 +346,7 @@ async def create_migration_job( location. Args: - request (:class:`google.cloud.clouddms_v1.types.CreateMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.CreateMigrationJobRequest, dict]): The request object. Request message to create a new Database Migration Service migration job in the specified project and region. @@ -437,18 +439,18 @@ async def create_migration_job( async def update_migration_job( self, - request: clouddms.UpdateMigrationJobRequest = None, + request: Union[clouddms.UpdateMigrationJobRequest, dict] = None, *, migration_job: clouddms_resources.MigrationJob = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Updates the parameters of a single migration job. Args: - request (:class:`google.cloud.clouddms_v1.types.UpdateMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.UpdateMigrationJobRequest, dict]): The request object. Request message for 'UpdateMigrationJob' request. migration_job (:class:`google.cloud.clouddms_v1.types.MigrationJob`): @@ -534,17 +536,17 @@ async def update_migration_job( async def delete_migration_job( self, - request: clouddms.DeleteMigrationJobRequest = None, + request: Union[clouddms.DeleteMigrationJobRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Deletes a single migration job. Args: - request (:class:`google.cloud.clouddms_v1.types.DeleteMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.DeleteMigrationJobRequest, dict]): The request object. Request message for 'DeleteMigrationJob' request. name (:class:`str`): @@ -626,16 +628,16 @@ async def delete_migration_job( async def start_migration_job( self, - request: clouddms.StartMigrationJobRequest = None, + request: Union[clouddms.StartMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Start an already created migration job. Args: - request (:class:`google.cloud.clouddms_v1.types.StartMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.StartMigrationJobRequest, dict]): The request object. Request message for 'StartMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -687,16 +689,16 @@ async def start_migration_job( async def stop_migration_job( self, - request: clouddms.StopMigrationJobRequest = None, + request: Union[clouddms.StopMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: r"""Stops a running migration job. Args: - request (:class:`google.cloud.clouddms_v1.types.StopMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.StopMigrationJobRequest, dict]): The request object. Request message for 'StopMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -748,9 +750,9 @@ async def stop_migration_job( async def resume_migration_job( self, - request: clouddms.ResumeMigrationJobRequest = None, + request: Union[clouddms.ResumeMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -758,7 +760,7 @@ async def resume_migration_job( is resumable (was stopped during CDC phase). Args: - request (:class:`google.cloud.clouddms_v1.types.ResumeMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.ResumeMigrationJobRequest, dict]): The request object. Request message for 'ResumeMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -810,9 +812,9 @@ async def resume_migration_job( async def promote_migration_job( self, - request: clouddms.PromoteMigrationJobRequest = None, + request: Union[clouddms.PromoteMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -821,7 +823,7 @@ async def promote_migration_job( standalone database. Args: - request (:class:`google.cloud.clouddms_v1.types.PromoteMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.PromoteMigrationJobRequest, dict]): The request object. Request message for 'PromoteMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -873,9 +875,9 @@ async def promote_migration_job( async def verify_migration_job( self, - request: clouddms.VerifyMigrationJobRequest = None, + request: Union[clouddms.VerifyMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -884,7 +886,7 @@ async def verify_migration_job( prerequisites are met. Args: - request (:class:`google.cloud.clouddms_v1.types.VerifyMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.VerifyMigrationJobRequest, dict]): The request object. Request message for 'VerifyMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -936,9 +938,9 @@ async def verify_migration_job( async def restart_migration_job( self, - request: clouddms.RestartMigrationJobRequest = None, + request: Union[clouddms.RestartMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -947,7 +949,7 @@ async def restart_migration_job( starting the migration process from scratch. Args: - request (:class:`google.cloud.clouddms_v1.types.RestartMigrationJobRequest`): + request (Union[google.cloud.clouddms_v1.types.RestartMigrationJobRequest, dict]): The request object. Request message for 'RestartMigrationJob' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -999,9 +1001,9 @@ async def restart_migration_job( async def generate_ssh_script( self, - request: clouddms.GenerateSshScriptRequest = None, + request: Union[clouddms.GenerateSshScriptRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms.SshScript: @@ -1009,7 +1011,7 @@ async def generate_ssh_script( reverse SSH connectivity. Args: - request (:class:`google.cloud.clouddms_v1.types.GenerateSshScriptRequest`): + request (Union[google.cloud.clouddms_v1.types.GenerateSshScriptRequest, dict]): The request object. Request message for 'GenerateSshScript' request. retry (google.api_core.retry.Retry): Designation of what errors, if any, @@ -1051,10 +1053,10 @@ async def generate_ssh_script( async def list_connection_profiles( self, - request: clouddms.ListConnectionProfilesRequest = None, + request: Union[clouddms.ListConnectionProfilesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListConnectionProfilesAsyncPager: @@ -1062,7 +1064,7 @@ async def list_connection_profiles( project and location. Args: - request (:class:`google.cloud.clouddms_v1.types.ListConnectionProfilesRequest`): + request (Union[google.cloud.clouddms_v1.types.ListConnectionProfilesRequest, dict]): The request object. Request message for 'ListConnectionProfiles' request. parent (:class:`str`): @@ -1132,17 +1134,17 @@ async def list_connection_profiles( async def get_connection_profile( self, - request: clouddms.GetConnectionProfileRequest = None, + request: Union[clouddms.GetConnectionProfileRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms_resources.ConnectionProfile: r"""Gets details of a single connection profile. Args: - request (:class:`google.cloud.clouddms_v1.types.GetConnectionProfileRequest`): + request (Union[google.cloud.clouddms_v1.types.GetConnectionProfileRequest, dict]): The request object. Request message for 'GetConnectionProfile' request. name (:class:`str`): @@ -1201,12 +1203,12 @@ async def get_connection_profile( async def create_connection_profile( self, - request: clouddms.CreateConnectionProfileRequest = None, + request: Union[clouddms.CreateConnectionProfileRequest, dict] = None, *, parent: str = None, connection_profile: clouddms_resources.ConnectionProfile = None, connection_profile_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -1214,7 +1216,7 @@ async def create_connection_profile( and location. Args: - request (:class:`google.cloud.clouddms_v1.types.CreateConnectionProfileRequest`): + request (Union[google.cloud.clouddms_v1.types.CreateConnectionProfileRequest, dict]): The request object. Request message for 'CreateConnectionProfile' request. parent (:class:`str`): @@ -1304,11 +1306,11 @@ async def create_connection_profile( async def update_connection_profile( self, - request: clouddms.UpdateConnectionProfileRequest = None, + request: Union[clouddms.UpdateConnectionProfileRequest, dict] = None, *, connection_profile: clouddms_resources.ConnectionProfile = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -1316,7 +1318,7 @@ async def update_connection_profile( profile. Args: - request (:class:`google.cloud.clouddms_v1.types.UpdateConnectionProfileRequest`): + request (Union[google.cloud.clouddms_v1.types.UpdateConnectionProfileRequest, dict]): The request object. Request message for 'UpdateConnectionProfile' request. connection_profile (:class:`google.cloud.clouddms_v1.types.ConnectionProfile`): @@ -1401,10 +1403,10 @@ async def update_connection_profile( async def delete_connection_profile( self, - request: clouddms.DeleteConnectionProfileRequest = None, + request: Union[clouddms.DeleteConnectionProfileRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation_async.AsyncOperation: @@ -1414,7 +1416,7 @@ async def delete_connection_profile( jobs. Args: - request (:class:`google.cloud.clouddms_v1.types.DeleteConnectionProfileRequest`): + request (Union[google.cloud.clouddms_v1.types.DeleteConnectionProfileRequest, dict]): The request object. Request message for 'DeleteConnectionProfile' request. name (:class:`str`): diff --git a/google/cloud/clouddms_v1/services/data_migration_service/client.py b/google/cloud/clouddms_v1/services/data_migration_service/client.py index 898ecac..0664e87 100644 --- a/google/cloud/clouddms_v1/services/data_migration_service/client.py +++ b/google/cloud/clouddms_v1/services/data_migration_service/client.py @@ -30,6 +30,8 @@ from google.auth.exceptions import MutualTLSChannelError # type: ignore from google.oauth2 import service_account # type: ignore +OptionalRetry = Union[retries.Retry, object] + from google.api_core import operation # type: ignore from google.api_core import operation_async # type: ignore from google.cloud.clouddms_v1.services.data_migration_service import pagers @@ -380,7 +382,7 @@ def list_migration_jobs( request: Union[clouddms.ListMigrationJobsRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListMigrationJobsPager: @@ -460,7 +462,7 @@ def get_migration_job( request: Union[clouddms.GetMigrationJobRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms_resources.MigrationJob: @@ -533,7 +535,7 @@ def create_migration_job( parent: str = None, migration_job: clouddms_resources.MigrationJob = None, migration_job_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -638,7 +640,7 @@ def update_migration_job( *, migration_job: clouddms_resources.MigrationJob = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -734,7 +736,7 @@ def delete_migration_job( request: Union[clouddms.DeleteMigrationJobRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -825,7 +827,7 @@ def start_migration_job( self, request: Union[clouddms.StartMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -887,7 +889,7 @@ def stop_migration_job( self, request: Union[clouddms.StopMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -949,7 +951,7 @@ def resume_migration_job( self, request: Union[clouddms.ResumeMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1012,7 +1014,7 @@ def promote_migration_job( self, request: Union[clouddms.PromoteMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1076,7 +1078,7 @@ def verify_migration_job( self, request: Union[clouddms.VerifyMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1140,7 +1142,7 @@ def restart_migration_job( self, request: Union[clouddms.RestartMigrationJobRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1204,7 +1206,7 @@ def generate_ssh_script( self, request: Union[clouddms.GenerateSshScriptRequest, dict] = None, *, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms.SshScript: @@ -1258,7 +1260,7 @@ def list_connection_profiles( request: Union[clouddms.ListConnectionProfilesRequest, dict] = None, *, parent: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> pagers.ListConnectionProfilesPager: @@ -1339,7 +1341,7 @@ def get_connection_profile( request: Union[clouddms.GetConnectionProfileRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> clouddms_resources.ConnectionProfile: @@ -1410,7 +1412,7 @@ def create_connection_profile( parent: str = None, connection_profile: clouddms_resources.ConnectionProfile = None, connection_profile_id: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1514,7 +1516,7 @@ def update_connection_profile( *, connection_profile: clouddms_resources.ConnectionProfile = None, update_mask: field_mask_pb2.FieldMask = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: @@ -1612,7 +1614,7 @@ def delete_connection_profile( request: Union[clouddms.DeleteConnectionProfileRequest, dict] = None, *, name: str = None, - retry: retries.Retry = gapic_v1.method.DEFAULT, + retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: float = None, metadata: Sequence[Tuple[str, str]] = (), ) -> operation.Operation: diff --git a/google/cloud/clouddms_v1/services/data_migration_service/transports/base.py b/google/cloud/clouddms_v1/services/data_migration_service/transports/base.py index 892cfc9..639e3f1 100644 --- a/google/cloud/clouddms_v1/services/data_migration_service/transports/base.py +++ b/google/cloud/clouddms_v1/services/data_migration_service/transports/base.py @@ -15,7 +15,6 @@ # import abc from typing import Awaitable, Callable, Dict, Optional, Sequence, Union -import packaging.version import pkg_resources import google.auth # type: ignore @@ -38,15 +37,6 @@ except pkg_resources.DistributionNotFound: DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo() -try: - # google.auth.__version__ was added in 1.26.0 - _GOOGLE_AUTH_VERSION = google.auth.__version__ -except AttributeError: - try: # try pkg_resources if it is available - _GOOGLE_AUTH_VERSION = pkg_resources.get_distribution("google-auth").version - except pkg_resources.DistributionNotFound: # pragma: NO COVER - _GOOGLE_AUTH_VERSION = None - class DataMigrationServiceTransport(abc.ABC): """Abstract transport class for DataMigrationService.""" @@ -96,7 +86,7 @@ def __init__( host += ":443" self._host = host - scopes_kwargs = self._get_scopes_kwargs(self._host, scopes) + scopes_kwargs = {"scopes": scopes, "default_scopes": self.AUTH_SCOPES} # Save the scopes. self._scopes = scopes @@ -129,29 +119,6 @@ def __init__( # Save the credentials. self._credentials = credentials - # TODO(busunkim): This method is in the base transport - # to avoid duplicating code across the transport classes. These functions - # should be deleted once the minimum required versions of google-auth is increased. - - # TODO: Remove this function once google-auth >= 1.25.0 is required - @classmethod - def _get_scopes_kwargs( - cls, host: str, scopes: Optional[Sequence[str]] - ) -> Dict[str, Optional[Sequence[str]]]: - """Returns scopes kwargs to pass to google-auth methods depending on the google-auth version""" - - scopes_kwargs = {} - - if _GOOGLE_AUTH_VERSION and ( - packaging.version.parse(_GOOGLE_AUTH_VERSION) - >= packaging.version.parse("1.25.0") - ): - scopes_kwargs = {"scopes": scopes, "default_scopes": cls.AUTH_SCOPES} - else: - scopes_kwargs = {"scopes": scopes or cls.AUTH_SCOPES} - - return scopes_kwargs - def _prep_wrapped_messages(self, client_info): # Precompute the wrapped methods. self._wrapped_methods = { @@ -242,7 +209,7 @@ def close(self): raise NotImplementedError() @property - def operations_client(self) -> operations_v1.OperationsClient: + def operations_client(self): """Return the client designed to process long-running operations.""" raise NotImplementedError() diff --git a/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc.py b/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc.py index fae8123..f837ec7 100644 --- a/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc.py +++ b/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc.py @@ -113,7 +113,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc_asyncio.py b/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc_asyncio.py index 7f2cd57..e9d9025 100644 --- a/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc_asyncio.py +++ b/google/cloud/clouddms_v1/services/data_migration_service/transports/grpc_asyncio.py @@ -21,7 +21,6 @@ from google.api_core import operations_v1 # type: ignore from google.auth import credentials as ga_credentials # type: ignore from google.auth.transport.grpc import SslCredentials # type: ignore -import packaging.version import grpc # type: ignore from grpc.experimental import aio # type: ignore @@ -160,7 +159,7 @@ def __init__( self._grpc_channel = None self._ssl_channel_credentials = ssl_channel_credentials self._stubs: Dict[str, Callable] = {} - self._operations_client = None + self._operations_client: Optional[operations_v1.OperationsAsyncClient] = None if api_mtls_endpoint: warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) diff --git a/google/cloud/clouddms_v1/types/clouddms.py b/google/cloud/clouddms_v1/types/clouddms.py index f41582c..4410443 100644 --- a/google/cloud/clouddms_v1/types/clouddms.py +++ b/google/cloud/clouddms_v1/types/clouddms.py @@ -301,6 +301,13 @@ class RestartMigrationJobRequest(proto.Message): class GenerateSshScriptRequest(proto.Message): r"""Request message for 'GenerateSshScript' request. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: migration_job (str): Name of the migration job resource to @@ -310,8 +317,10 @@ class GenerateSshScriptRequest(proto.Message): to create. vm_creation_config (google.cloud.clouddms_v1.types.VmCreationConfig): The VM creation configuration + This field is a member of `oneof`_ ``vm_config``. vm_selection_config (google.cloud.clouddms_v1.types.VmSelectionConfig): The VM selection configuration + This field is a member of `oneof`_ ``vm_config``. vm_port (int): The port that will be open on the bastion host diff --git a/google/cloud/clouddms_v1/types/clouddms_resources.py b/google/cloud/clouddms_v1/types/clouddms_resources.py index 4989041..d6982b6 100644 --- a/google/cloud/clouddms_v1/types/clouddms_resources.py +++ b/google/cloud/clouddms_v1/types/clouddms_resources.py @@ -212,6 +212,13 @@ class CloudSqlConnectionProfile(proto.Message): class SqlAclEntry(proto.Message): r"""An entry for an Access Control list. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: value (str): The allowlisted value for the access control @@ -220,9 +227,11 @@ class SqlAclEntry(proto.Message): The time when this access control entry expires in `RFC 3339 `__ format, for example: ``2012-11-15T16:19:00.094Z``. + This field is a member of `oneof`_ ``expiration``. ttl (google.protobuf.duration_pb2.Duration): Input only. The time-to-leave of this access control entry. + This field is a member of `oneof`_ ``expiration``. label (str): A label to identify this entry. """ @@ -464,6 +473,13 @@ class DatabaseType(proto.Message): class MigrationJob(proto.Message): r"""Represents a Database Migration Service migration job object. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): The name (URI) of this migration job @@ -507,12 +523,15 @@ class MigrationJob(proto.Message): reverse_ssh_connectivity (google.cloud.clouddms_v1.types.ReverseSshConnectivity): The details needed to communicate to the source over Reverse SSH tunnel connectivity. + This field is a member of `oneof`_ ``connectivity``. vpc_peering_connectivity (google.cloud.clouddms_v1.types.VpcPeeringConnectivity): The details of the VPC network that the source database is located in. + This field is a member of `oneof`_ ``connectivity``. static_ip_connectivity (google.cloud.clouddms_v1.types.StaticIpConnectivity): static ip connectivity data (default, no additional details needed). + This field is a member of `oneof`_ ``connectivity``. duration (google.protobuf.duration_pb2.Duration): Output only. The duration of the migration job (in seconds). A duration in seconds with up @@ -604,6 +623,13 @@ class Type(proto.Enum): class ConnectionProfile(proto.Message): r"""A connection profile definition. + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: name (str): The name of this connection profile resource @@ -634,10 +660,13 @@ class ConnectionProfile(proto.Message): The connection profile display name. mysql (google.cloud.clouddms_v1.types.MySqlConnectionProfile): A MySQL database connection profile. + This field is a member of `oneof`_ ``connection_profile``. postgresql (google.cloud.clouddms_v1.types.PostgreSqlConnectionProfile): A PostgreSQL database connection profile. + This field is a member of `oneof`_ ``connection_profile``. cloudsql (google.cloud.clouddms_v1.types.CloudSqlConnectionProfile): A CloudSQL database connection profile. + This field is a member of `oneof`_ ``connection_profile``. error (google.rpc.status_pb2.Status): Output only. The error details in case of state FAILED. diff --git a/setup.py b/setup.py index 06679e3..40299fa 100644 --- a/setup.py +++ b/setup.py @@ -29,9 +29,8 @@ # NOTE: Maintainers, please do not require google-api-core>=2.x.x # Until this issue is closed # https://github.com/googleapis/google-cloud-python/issues/10566 - "google-api-core[grpc] >= 1.26.0, <3.0.0dev", + "google-api-core[grpc] >= 1.28.0, <3.0.0dev", "proto-plus >= 1.15.0", - "packaging >= 14.3", ] package_root = os.path.abspath(os.path.dirname(__file__)) diff --git a/testing/constraints-3.6.txt b/testing/constraints-3.6.txt index fe11de2..1e3ec8b 100644 --- a/testing/constraints-3.6.txt +++ b/testing/constraints-3.6.txt @@ -4,7 +4,5 @@ # Pin the version to the lower bound. # e.g., if setup.py has "google-cloud-foo >= 1.14.0, < 2.0.0dev", # Then this file should have google-cloud-foo==1.14.0 -google-api-core==1.26.0 +google-api-core==1.28.0 proto-plus==1.15.0 -packaging==14.3 -google-auth==1.24.0 # TODO: remove when google-auth>=1.25.0 si transitively required through google-api-core \ No newline at end of file diff --git a/tests/unit/gapic/clouddms_v1/test_data_migration_service.py b/tests/unit/gapic/clouddms_v1/test_data_migration_service.py index dc2c1b1..9291ff1 100644 --- a/tests/unit/gapic/clouddms_v1/test_data_migration_service.py +++ b/tests/unit/gapic/clouddms_v1/test_data_migration_service.py @@ -15,7 +15,6 @@ # import os import mock -import packaging.version import grpc from grpc.experimental import aio @@ -43,9 +42,6 @@ ) from google.cloud.clouddms_v1.services.data_migration_service import pagers from google.cloud.clouddms_v1.services.data_migration_service import transports -from google.cloud.clouddms_v1.services.data_migration_service.transports.base import ( - _GOOGLE_AUTH_VERSION, -) from google.cloud.clouddms_v1.types import clouddms from google.cloud.clouddms_v1.types import clouddms_resources from google.longrunning import operations_pb2 @@ -59,20 +55,6 @@ import google.auth -# TODO(busunkim): Once google-auth >= 1.25.0 is required transitively -# through google-api-core: -# - Delete the auth "less than" test cases -# - Delete these pytest markers (Make the "greater than or equal to" tests the default). -requires_google_auth_lt_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) >= packaging.version.parse("1.25.0"), - reason="This test requires google-auth < 1.25.0", -) -requires_google_auth_gte_1_25_0 = pytest.mark.skipif( - packaging.version.parse(_GOOGLE_AUTH_VERSION) < packaging.version.parse("1.25.0"), - reason="This test requires google-auth >= 1.25.0", -) - - def client_cert_source_callback(): return b"cert bytes", b"key bytes" @@ -234,7 +216,7 @@ def test_data_migration_service_client_client_options( options = client_options.ClientOptions(api_endpoint="squid.clam.whelk") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -251,7 +233,7 @@ def test_data_migration_service_client_client_options( with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "never"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -268,7 +250,7 @@ def test_data_migration_service_client_client_options( with mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "always"}): with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -297,7 +279,7 @@ def test_data_migration_service_client_client_options( options = client_options.ClientOptions(quota_project_id="octopus") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -366,7 +348,7 @@ def test_data_migration_service_client_mtls_env_auto( ) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) if use_client_cert_env == "false": expected_client_cert_source = None @@ -408,7 +390,7 @@ def test_data_migration_service_client_mtls_env_auto( expected_client_cert_source = client_cert_source_callback patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -430,7 +412,7 @@ def test_data_migration_service_client_mtls_env_auto( return_value=False, ): patched.return_value = None - client = client_class() + client = client_class(transport=transport_name) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -465,7 +447,7 @@ def test_data_migration_service_client_client_options_scopes( options = client_options.ClientOptions(scopes=["1", "2"],) with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file=None, @@ -500,7 +482,7 @@ def test_data_migration_service_client_client_options_credentials_file( options = client_options.ClientOptions(credentials_file="credentials.json") with mock.patch.object(transport_class, "__init__") as patched: patched.return_value = None - client = client_class(client_options=options) + client = client_class(transport=transport_name, client_options=options) patched.assert_called_once_with( credentials=None, credentials_file="credentials.json", @@ -4398,7 +4380,6 @@ def test_data_migration_service_base_transport(): transport.operations_client -@requires_google_auth_gte_1_25_0 def test_data_migration_service_base_transport_with_credentials_file(): # Instantiate the base transport with a credentials file with mock.patch.object( @@ -4419,26 +4400,6 @@ def test_data_migration_service_base_transport_with_credentials_file(): ) -@requires_google_auth_lt_1_25_0 -def test_data_migration_service_base_transport_with_credentials_file_old_google_auth(): - # Instantiate the base transport with a credentials file - with mock.patch.object( - google.auth, "load_credentials_from_file", autospec=True - ) as load_creds, mock.patch( - "google.cloud.clouddms_v1.services.data_migration_service.transports.DataMigrationServiceTransport._prep_wrapped_messages" - ) as Transport: - Transport.return_value = None - load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) - transport = transports.DataMigrationServiceTransport( - credentials_file="credentials.json", quota_project_id="octopus", - ) - load_creds.assert_called_once_with( - "credentials.json", - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - def test_data_migration_service_base_transport_with_adc(): # Test the default credentials are used if credentials and credentials_file are None. with mock.patch.object(google.auth, "default", autospec=True) as adc, mock.patch( @@ -4450,7 +4411,6 @@ def test_data_migration_service_base_transport_with_adc(): adc.assert_called_once() -@requires_google_auth_gte_1_25_0 def test_data_migration_service_auth_adc(): # If no credentials are provided, we should use ADC credentials. with mock.patch.object(google.auth, "default", autospec=True) as adc: @@ -4463,18 +4423,6 @@ def test_data_migration_service_auth_adc(): ) -@requires_google_auth_lt_1_25_0 -def test_data_migration_service_auth_adc_old_google_auth(): - # If no credentials are provided, we should use ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - DataMigrationServiceClient() - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id=None, - ) - - @pytest.mark.parametrize( "transport_class", [ @@ -4482,7 +4430,6 @@ def test_data_migration_service_auth_adc_old_google_auth(): transports.DataMigrationServiceGrpcAsyncIOTransport, ], ) -@requires_google_auth_gte_1_25_0 def test_data_migration_service_transport_auth_adc(transport_class): # If credentials and host are not provided, the transport class should use # ADC credentials. @@ -4496,26 +4443,6 @@ def test_data_migration_service_transport_auth_adc(transport_class): ) -@pytest.mark.parametrize( - "transport_class", - [ - transports.DataMigrationServiceGrpcTransport, - transports.DataMigrationServiceGrpcAsyncIOTransport, - ], -) -@requires_google_auth_lt_1_25_0 -def test_data_migration_service_transport_auth_adc_old_google_auth(transport_class): - # If credentials and host are not provided, the transport class should use - # ADC credentials. - with mock.patch.object(google.auth, "default", autospec=True) as adc: - adc.return_value = (ga_credentials.AnonymousCredentials(), None) - transport_class(quota_project_id="octopus") - adc.assert_called_once_with( - scopes=("https://www.googleapis.com/auth/cloud-platform",), - quota_project_id="octopus", - ) - - @pytest.mark.parametrize( "transport_class,grpc_helpers", [